#include <stdio.h>
#include <mysql/mysql.h>
#include <string.h>


// ./adduser <用户名> <手机号> <口令>
int main(int argc, char const *argv[])
{
    if(argc != 4) return -1;
    int ret = mysql_library_init(argc, (char **)argv, NULL); // mysql库的使用初始化
    if(ret != 0){
        perror("mysql lib init");
        return -1;
    }    

    printf("---mysql lib init ok--\n");

    MYSQL db;  // 定义mysql数据库对象
    if(mysql_init(&db) != NULL){
        printf("数据库对象初始化成功!\n");
        
        // 连接数据库:  1）本地域套接字  2）网络域套接字
        char *sock_path = "/var/run/mysqld/mysqld.sock";
        // host参数： 本地的 localhost  或 NULL
        if(mysql_real_connect(&db, NULL, "root", "root", "cloudfs", 3306, sock_path, 0) != NULL){
            printf("---MYSQ数据库连接成功--\n");

            // 扩展： 设置数据库客户端的字符集
            mysql_set_character_set(&db, "utf8");

            // 编写ddl sql语句
            char sql[256] = "";
            // 检查数据的完整性
            // 检查手机号是否正确(正则表达式方式验证)、是否已存在（违反唯一约束）

            sprintf(sql, "insert into t_user(name,phone) values('%s', '%s')", argv[1], argv[2]);
            if(mysql_real_query(&db, sql, strlen(sql)) == 0){
                bzero(sql, 256);

                // 子查询方式查到上一个sql语句执行成功的用户ID， 作为values的第一个元素值
                sprintf(sql, "insert into t_user_login(user_id,auth_string) values((select max(id) from t_user), hex(aes_encrypt('%s', '@520Disen!')) )", argv[3]);
                if(mysql_real_query(&db, sql, strlen(sql)) == 0){
                    printf("添加用户成功\n");
                }else{
                    printf("error: %s\n", mysql_error(&db));
                }
            }else{
                printf("error: %s\n", mysql_error(&db));
            }
            

            mysql_close(&db); // 关闭数据库连接
        }
    }


    mysql_library_end(); // mysql库的结束
    return 0;
}






